﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentNHibernate.Mapping;
using LeandroPrado.FluentNHibernate.Domain.Entidades;

namespace LeandroPrado.FluentNHibernate.Domain.Mapeamento
{
    public class PessoaMap : ClassMap<Pessoa>
    {
        public PessoaMap()
        {
            Id(x => x.Codigo)
                .GeneratedBy.Identity();

            Map(x => x.Nome)
                .Not.Nullable()
                .Length(255);

            Map(x => x.Endereco)
                .Length(255);

            Map(x => x.Cep)
                .Length(255);

            Map(x => x.Email)
                .Length(255);

            Map(x => x.DataCadastro)
                .Not.Nullable();

            Map(x => x.Status)
                .CustomType<int>();

            References(x => x.Departamento)
                .Not.Nullable();

            HasManyToMany(x => x.Grupos);

            HasMany(x => x.Telefones)
                .Cascade.All()
                .LazyLoad();
        }
    }
}